package com.cn.wanxi.servlet;


import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.service.CompanyService;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.service.NewsService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 前端和后端需要进行数据交互
 * 后端的数据应该放在那里？
 * 后端应该通过什么样的方式给前端数据？
 * servlet  三层架构
 * 页面控制层  主要的作用是将数据传递给页面  servlet  一个servlet 对应一个页面
 * 服务逻辑层  主要是将数据进行封装  主要写一些逻辑关系 service
 * 数据实现层  主要是存放数据的地方  dao
 * 实体层  对象层  pojo  vo  do   model
 * 解耦 把不相干的代码全部写到另外的地方
 * MVC 模式     springMVC
 * M  实体层  model entity
 * V  视图层  jsp   html
 * C  控制层  servlet  controller
 */
@WebServlet("/home")//前端访问后台的一个接口，地址
public class HomeServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//        需要将数据返回到页面上：管道：有一件容器去装数据
//        servlet  四大作用域 就是去装数据的
//        1.page  页面  上下文
//        2.request 请求对象  只有请求的页面才能得到数据
//        3.session  会话期 对象
//        4.application  应用程序
//        key， 关键字 用于区分是什么样的数据  名字
//        key值不能重复，如果重复了表示将前面的值覆盖
//        value的形式进行存储
//  servlet  ---> service -----> dao  ----->database

        CommonServlet.topAndNav(req);

        NewsService newsService = new NewsService();
        List<Object> newsModels = newsService.getNewsModels();
        req.setAttribute("newsModels", newsModels);
//        返回具体某个页面
//        1.页面转发
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);
//        2.重定向，只是单纯的跳转页面
//        resp.sendRedirect("/jsp/home.jsp");
    }
}
